home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- public class GregorianCalendar extends Calendar {
- // $FF: renamed from: BC int
- public static final int field_0 = 0;
- // $FF: renamed from: AD int
- public static final int field_1 = 1;
- private static final long julianDayOffset = 2440588L;
- private static final int millisPerDay = 86400000;
- private static final int[] numDays = new int[]{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
- private static final int[] leapNumDays = new int[]{0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};
- private static final int[] maxDaysInMonth = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
- private long gregorianCutover = -12219292800000L;
- private static final int[] MinValues = new int[]{0, 1, 0, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, -43200000, 0};
- private static final int[] GreatestMinValues = new int[]{0, 1, 0, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, -43200000, 0};
- private static final int[] LeastMaxValues = new int[]{1, 5000000, 11, 53, 4, 28, 365, 7, 4, 1, 11, 23, 59, 59, 999, 43200000, 3600000};
- private static final int[] MaxValues = new int[]{1, 5000000, 11, 54, 6, 31, 366, 7, 6, 1, 12, 23, 59, 59, 999, 43200000, 3600000};
-
- private static final long millisToJulianDay(long var0) {
- return var0 >= 0L ? 2440588L + var0 / 86400000L : 2440588L + (var0 - 86400000L + 1L) / 86400000L;
- }
-
- private static final long julianDayToMillis(long var0) {
- return (var0 - 2440588L) * 86400000L;
- }
-
- public GregorianCalendar() {
- super(TimeZone.getDefault(), Locale.getDefault());
- ((Calendar)this).set(0, 1);
- super.time = System.currentTimeMillis();
- super.isTimeSet = true;
- super.areFieldsSet = false;
- }
-
- public GregorianCalendar(TimeZone var1) {
- super(var1, Locale.getDefault());
- ((Calendar)this).set(0, 1);
- super.time = System.currentTimeMillis();
- super.isTimeSet = true;
- super.areFieldsSet = false;
- }
-
- public GregorianCalendar(Locale var1) {
- super(TimeZone.getDefault(), var1);
- ((Calendar)this).set(0, 1);
- super.time = System.currentTimeMillis();
- super.isTimeSet = true;
- super.areFieldsSet = false;
- }
-
- public GregorianCalendar(TimeZone var1, Locale var2) {
- super(var1, var2);
- ((Calendar)this).set(0, 1);
- super.time = System.currentTimeMillis();
- super.isTimeSet = true;
- super.areFieldsSet = false;
- }
-
- public GregorianCalendar(int var1, int var2, int var3) {
- super(TimeZone.getDefault(), Locale.getDefault());
- ((Calendar)this).set(0, 1);
- ((Calendar)this).set(1, var1);
- ((Calendar)this).set(2, var2);
- ((Calendar)this).set(5, var3);
- }
-
- public GregorianCalendar(int var1, int var2, int var3, int var4, int var5) {
- super(TimeZone.getDefault(), Locale.getDefault());
- ((Calendar)this).set(0, 1);
- ((Calendar)this).set(1, var1);
- ((Calendar)this).set(2, var2);
- ((Calendar)this).set(5, var3);
- ((Calendar)this).set(11, var4);
- ((Calendar)this).set(12, var5);
- }
-
- public GregorianCalendar(int var1, int var2, int var3, int var4, int var5, int var6) {
- super(TimeZone.getDefault(), Locale.getDefault());
- ((Calendar)this).set(0, 1);
- ((Calendar)this).set(1, var1);
- ((Calendar)this).set(2, var2);
- ((Calendar)this).set(5, var3);
- ((Calendar)this).set(11, var4);
- ((Calendar)this).set(12, var5);
- ((Calendar)this).set(13, var6);
- }
-
- public void setGregorianChange(Date var1) {
- this.gregorianCutover = var1.getTime();
- }
-
- public final Date getGregorianChange() {
- return new Date(this.gregorianCutover);
- }
-
- private final void timeToFields(long var1) {
- byte var9 = 1;
- long var20 = millisToJulianDay(var1);
- long var10;
- if (var1 >= this.gregorianCutover) {
- long var22 = (long)(((double)(var20 - 1867216L) - (double)0.25F) / (double)36524.25F);
- var10 = var20 + 1L + var22 - (long)((double)0.25F * (double)var22);
- } else {
- var10 = var20;
- }
-
- long var12 = var10 + 1524L;
- long var16 = (long)((double)6680.0F + ((double)(var12 - 2439870L) - 122.10000000000001) / (double)365.25F);
- long var14 = (long)((double)(365L * var16) + (double)0.25F * (double)var16);
- long var18 = (long)((double)(var12 - var14) / 30.6001);
- int var5 = (int)(var12 - var14 - (long)(30.6001 * (double)var18));
- int var4 = (int)var18 - 1;
- if (var4 > 12) {
- var4 -= 12;
- } else if (var4 < 0) {
- var4 += 12;
- }
-
- int var3 = (int)(var16 - 4715L);
- if (var4 > 2) {
- --var3;
- }
-
- if (var3 <= 0) {
- var9 = 0;
- var3 = 1 - var3;
- }
-
- ((Calendar)this).set(0, var9);
- ((Calendar)this).set(1, var3);
- ((Calendar)this).set(2, var4 - 1);
- ((Calendar)this).set(5, var5);
- int var6;
- if (var20 >= -1L) {
- var6 = 1 + (int)((var20 + 1L) % 7L);
- } else {
- var6 = 1 + (int)((var20 + 1L) % 7L + 7L);
- }
-
- ((Calendar)this).set(7, var6);
- int var7;
- if (this.isLeapYear(var3)) {
- var7 = leapNumDays[var4 - 1] + var5;
- } else {
- var7 = numDays[var4 - 1] + var5;
- }
-
- ((Calendar)this).set(6, var7);
- int var25 = (var6 - 1 - var7 + 1) % 7;
- if (var25 < 0) {
- var25 += 7;
- }
-
- int var8 = weekNumber(var7, var6 - 1, var25, ((Calendar)this).getFirstDayOfWeek() - 1, ((Calendar)this).getMinimalDaysInFirstWeek());
- ((Calendar)this).set(3, var8);
- var25 = (var6 - 1 - var5 + 1) % 7;
- if (var25 < 0) {
- var25 += 7;
- }
-
- var8 = weekNumber(var5, var6 - 1, var25, ((Calendar)this).getFirstDayOfWeek() - 1, ((Calendar)this).getMinimalDaysInFirstWeek());
- ((Calendar)this).set(4, var8);
- }
-
- private static int weekNumber(int var0, int var1, int var2, int var3, int var4) {
- int var5 = (var0 - 1) / 7 + 1;
- int var6 = (var3 + 6) % 7;
- if (var6 < var2) {
- var6 += 7;
- }
-
- if (var6 - var2 + 1 < var4) {
- --var5;
- }
-
- return var5;
- }
-
- private static int dateFrom(int var0, int var1, int var2, int var3, int var4) {
- int var5 = var1 - var2;
- if (var5 < 0) {
- var5 += 7;
- }
-
- int var6 = (var0 - 1) * 7 + var5 + 1;
- int var7 = (var3 + 6) % 7;
- if (var7 < var2) {
- var7 += 7;
- }
-
- if (var7 - var2 + 1 < var4) {
- var6 -= 7;
- }
-
- return var6;
- }
-
- public boolean isLeapYear(int var1) {
- return var1 % 4 == 0 && (var1 % 100 != 0 || var1 % 400 == 0);
- }
-
- protected void computeFields() {
- if (super.isTimeSet) {
- long var1 = super.time;
- TimeZone var3 = ((Calendar)this).getTimeZone();
- if (var3 != null) {
- var1 += (long)var3.getRawOffset();
- }
-
- this.timeToFields(var1);
- int var4 = ((Calendar)this).internalGet(0);
- int var5 = ((Calendar)this).internalGet(1);
- int var6 = ((Calendar)this).internalGet(2);
- int var7 = ((Calendar)this).internalGet(5);
- int var8 = ((Calendar)this).internalGet(7);
- int var9 = (int)(var1 % 86400000L);
- if (var9 < 0) {
- var9 += 86400000;
- }
-
- int var10 = 0;
- int var11 = 0;
- if (var3 != null) {
- var10 = var3.getRawOffset();
- var11 = var3.getOffset(var4, var5, var6, var7, var8, var9);
- var1 = super.time + (long)var11;
- var11 -= var10;
- if (var9 + var11 >= 86400000) {
- this.timeToFields(var1);
- var8 = ((Calendar)this).internalGet(7);
- var7 = ((Calendar)this).internalGet(5);
- var6 = ((Calendar)this).internalGet(2);
- var5 = ((Calendar)this).internalGet(1);
- var4 = ((Calendar)this).internalGet(0);
- }
-
- var9 = (int)(var1 % 86400000L);
- if (var9 < 0) {
- var9 += 86400000;
- }
- }
-
- ((Calendar)this).set(14, var9 % 1000);
- var9 /= 1000;
- ((Calendar)this).set(13, var9 % 60);
- var9 /= 60;
- ((Calendar)this).set(12, var9 % 60);
- var9 /= 60;
- ((Calendar)this).set(11, var9);
- ((Calendar)this).set(9, var9 / 12);
- int var12 = var9 % 12;
- ((Calendar)this).set(10, var12);
- ((Calendar)this).set(15, var10);
- ((Calendar)this).set(16, var11);
- ((Calendar)this).set(8, (var7 - 1) / 7 + 1);
- super.areFieldsSet = true;
- }
- }
-
- private boolean validateFields() {
- for(int var1 = 0; var1 <= 4; ++var1) {
- if (((Calendar)this).isSet(var1) && !this.boundsCheck(((Calendar)this).internalGet(var1), var1)) {
- return false;
- }
- }
-
- if (((Calendar)this).isSet(5)) {
- int var2 = ((Calendar)this).internalGet(1);
- int var3 = ((Calendar)this).internalGet(2);
- int var4 = ((Calendar)this).internalGet(5);
- if (var3 == 1 && this.isLeapYear(var2)) {
- if (var4 < this.getMinimum(5) || var4 > 29) {
- return false;
- }
- } else if (var4 < this.getMinimum(5) || var4 > maxDaysInMonth[var3]) {
- return false;
- }
- }
-
- if (((Calendar)this).isSet(6)) {
- int var6 = ((Calendar)this).internalGet(1);
- int var7 = ((Calendar)this).internalGet(6);
- if (this.isLeapYear(var6)) {
- if (var7 < 1 || var7 > 366) {
- return false;
- }
- } else if (var7 < 1 || var7 > 365) {
- return false;
- }
- }
-
- for(int var5 = 7; var5 <= 16; ++var5) {
- if (((Calendar)this).isSet(var5) && !this.boundsCheck(((Calendar)this).internalGet(var5), var5)) {
- return false;
- }
- }
-
- return true;
- }
-
- private boolean boundsCheck(int var1, int var2) {
- return var1 >= this.getMinimum(var2) && var1 <= this.getMaximum(var2);
- }
-
- protected void computeTime() {
- if (super.areFieldsSet) {
- if (!((Calendar)this).isLenient() && !this.validateFields()) {
- throw new IllegalArgumentException();
- } else {
- super.isTimeSet = true;
- super.time = 0L;
- int var1 = ((Calendar)this).internalGet(0);
- if (var1 >= 0 && var1 <= 1) {
- int var2 = ((Calendar)this).internalGet(1);
- int var3 = 0;
- int var4 = 0;
- if (var2 <= 0) {
- throw new IllegalArgumentException();
- } else {
- if (var1 == 0) {
- var2 = 1 - var2;
- }
-
- long var5 = 0L;
- if (!((Calendar)this).isSet(2) || !((Calendar)this).isSet(5) && (!((Calendar)this).isSet(7) || !((Calendar)this).isSet(4) && !((Calendar)this).isSet(8))) {
- if (!((Calendar)this).isSet(6) && (!((Calendar)this).isSet(7) || !((Calendar)this).isSet(3))) {
- throw new IllegalArgumentException();
- }
-
- --var2;
- var5 = (long)(Math.floor((double)365.25F * (double)var2) + (double)428.0F + (double)1720995.0F);
- if (!((Calendar)this).isSet(6)) {
- throw new IllegalArgumentException();
- }
-
- var5 += (long)((Calendar)this).internalGet(6);
- } else {
- var3 = ((Calendar)this).internalGet(2) + 1;
- if (var3 < 1) {
- throw new IllegalArgumentException();
- }
-
- if (var3 > 12) {
- var2 += var3 / 12;
- var3 %= 12;
- }
-
- if (var3 > 2) {
- ++var3;
- } else {
- --var2;
- var3 += 13;
- }
-
- var5 = (long)(Math.floor((double)365.25F * (double)var2) + Math.floor(30.6001 * (double)var3) + (double)1720995.0F);
- if (!((Calendar)this).isSet(5)) {
- throw new IllegalArgumentException();
- }
-
- var4 = ((Calendar)this).internalGet(5);
- var5 += (long)var4;
- }
-
- if (julianDayToMillis(var5) >= this.gregorianCutover) {
- long var7 = (long)(0.01 * (double)var2);
- var5 += 2L - var7 + (long)((double)0.25F * (double)var7);
- }
-
- super.time = julianDayToMillis(var5);
- int var18 = 0;
- if (((Calendar)this).isSet(11)) {
- var18 += ((Calendar)this).internalGet(11) % 24;
- } else if (((Calendar)this).isSet(10)) {
- var18 += ((Calendar)this).internalGet(10) % 12;
- var18 += 12 * ((Calendar)this).internalGet(9);
- }
-
- var18 *= 60;
- var18 += ((Calendar)this).internalGet(12);
- var18 *= 60;
- var18 += ((Calendar)this).internalGet(13);
- var18 *= 1000;
- var18 += ((Calendar)this).internalGet(14);
- super.time += (long)var18;
- int var8 = 0;
- if (((Calendar)this).isSet(15)) {
- var8 = ((Calendar)this).internalGet(15);
- var8 += ((Calendar)this).internalGet(16);
- } else {
- TimeZone var9 = ((Calendar)this).getTimeZone();
- if (var9 != null) {
- if (((Calendar)this).isSet(2) && ((Calendar)this).isSet(5)) {
- int var27;
- if (((Calendar)this).isSet(7)) {
- var27 = ((Calendar)this).internalGet(7);
- } else {
- var27 = 1 + (int)((var5 + 1L) % 7L);
- }
-
- var8 = var9.getOffset(var1, ((Calendar)this).internalGet(1), ((Calendar)this).internalGet(2), ((Calendar)this).internalGet(5), var27, var18);
- } else {
- long var10 = super.time;
- ((Calendar)this).setTimeInMillis(super.time - (long)var9.getRawOffset());
- this.computeFields();
- var8 = var9.getOffset(var1, ((Calendar)this).internalGet(1), ((Calendar)this).internalGet(2), ((Calendar)this).internalGet(5), ((Calendar)this).internalGet(7), var18);
- super.time = var10;
- }
- }
- }
-
- super.time -= (long)var8;
- }
- } else {
- throw new IllegalArgumentException();
- }
- }
- }
- }
-
- public Object clone() {
- try {
- GregorianCalendar var1 = (GregorianCalendar)super.clone();
- ((Calendar)var1).setLenient(((Calendar)this).isLenient());
- ((Calendar)var1).setTimeZone(((Calendar)this).getTimeZone());
- ((Calendar)var1).setFirstDayOfWeek(((Calendar)this).getFirstDayOfWeek());
- ((Calendar)var1).setMinimalDaysInFirstWeek(((Calendar)this).getMinimalDaysInFirstWeek());
- return var1;
- } catch (InternalError var2) {
- throw var2;
- }
- }
-
- public synchronized int hashCode() {
- return ((Calendar)this).getFirstDayOfWeek() ^ ((Calendar)this).getMinimalDaysInFirstWeek();
- }
-
- public boolean equals(Object var1) {
- if (this == var1) {
- return true;
- } else if (!(var1 instanceof GregorianCalendar)) {
- return false;
- } else {
- GregorianCalendar var2 = (GregorianCalendar)var1;
- if (((Calendar)this).getTimeInMillis() != ((Calendar)var2).getTimeInMillis()) {
- return false;
- } else if (this.hashCode() != var2.hashCode()) {
- return false;
- } else if (((Calendar)this).isLenient() != ((Calendar)var2).isLenient()) {
- return false;
- } else if (((Calendar)this).getFirstDayOfWeek() != ((Calendar)var2).getFirstDayOfWeek()) {
- return false;
- } else if (((Calendar)this).getMinimalDaysInFirstWeek() != ((Calendar)var2).getMinimalDaysInFirstWeek()) {
- return false;
- } else {
- return ((Calendar)this).getTimeZone().equals(((Calendar)var2).getTimeZone());
- }
- }
- }
-
- public boolean before(Object var1) {
- if (this == var1) {
- return true;
- } else if (var1 != null && this.getClass().equals(var1.getClass())) {
- GregorianCalendar var2 = (GregorianCalendar)var1;
- return ((Calendar)this).getTimeInMillis() < ((Calendar)var2).getTimeInMillis();
- } else {
- return false;
- }
- }
-
- public boolean after(Object var1) {
- if (this == var1) {
- return true;
- } else if (var1 != null && this.getClass().equals(var1.getClass())) {
- GregorianCalendar var2 = (GregorianCalendar)var1;
- return ((Calendar)this).getTimeInMillis() > ((Calendar)var2).getTimeInMillis();
- } else {
- return false;
- }
- }
-
- public void add(int var1, int var2) {
- if (!super.areFieldsSet) {
- this.computeFields();
- }
-
- if (var2 != 0) {
- if (var1 == 1) {
- int var6 = ((Calendar)this).internalGet(1);
- if (((Calendar)this).internalGet(0) == 1) {
- var6 += var2;
- if (var6 > 0) {
- ((Calendar)this).set(1, var6);
- } else {
- ((Calendar)this).set(1, 1 - var6);
- ((Calendar)this).set(0, 0);
- }
- } else {
- var6 -= var2;
- if (var6 > 0) {
- ((Calendar)this).set(1, var6);
- } else {
- ((Calendar)this).set(1, 1 - var6);
- ((Calendar)this).set(0, 1);
- }
- }
- } else if (var1 == 2) {
- int var5 = ((Calendar)this).internalGet(2) + var2;
- if (var5 >= 0) {
- this.add(1, var5 / 12);
- ((Calendar)this).set(2, var5 % 12);
- } else {
- this.add(1, (var5 + 1) / 12 - 1);
- if (var5 % 12 == 0) {
- ((Calendar)this).set(2, 0);
- } else {
- ((Calendar)this).set(2, var5 % 12 + 12);
- }
- }
- } else {
- long var3 = (long)var2;
- switch (var1) {
- case 0:
- case 15:
- case 16:
- throw new IllegalArgumentException();
- case 1:
- case 2:
- case 14:
- default:
- break;
- case 3:
- case 4:
- case 8:
- var3 *= 604800000L;
- break;
- case 5:
- case 6:
- case 7:
- var3 *= 86400000L;
- break;
- case 9:
- var3 *= 43200000L;
- break;
- case 10:
- case 11:
- var3 *= 3600000L;
- break;
- case 12:
- var3 *= 60000L;
- break;
- case 13:
- var3 *= 1000L;
- }
-
- super.time += var3;
- ((Calendar)this).setTimeInMillis(super.time);
- this.computeFields();
- }
- }
- }
-
- public void roll(int var1, boolean var2) {
- if (!super.areFieldsSet) {
- this.computeFields();
- }
-
- if (var2) {
- switch (var1) {
- case 0:
- case 3:
- case 4:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 15:
- case 16:
- throw new IllegalArgumentException();
- case 1:
- ((Calendar)this).set(1, (((Calendar)this).internalGet(1) + 1) % this.getMaximum(1));
- return;
- case 2:
- ((Calendar)this).set(2, (((Calendar)this).internalGet(2) + 1) % 12);
- return;
- case 5:
- if (((Calendar)this).internalGet(2) == 1 && this.isLeapYear(((Calendar)this).internalGet(1))) {
- ((Calendar)this).set(5, ((Calendar)this).internalGet(5) % 29 + 1);
- return;
- }
-
- ((Calendar)this).set(5, ((Calendar)this).internalGet(5) % maxDaysInMonth[((Calendar)this).internalGet(2)] + 1);
- return;
- case 11:
- ((Calendar)this).set(11, (((Calendar)this).internalGet(11) + 1) % 24);
- return;
- case 12:
- ((Calendar)this).set(12, (((Calendar)this).internalGet(12) + 1) % 60);
- return;
- case 13:
- ((Calendar)this).set(13, (((Calendar)this).internalGet(13) + 1) % 60);
- return;
- case 14:
- ((Calendar)this).set(14, (((Calendar)this).internalGet(14) + 1) % 1000);
- return;
- }
- } else {
- switch (var1) {
- case 0:
- case 3:
- case 4:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 15:
- case 16:
- throw new IllegalArgumentException();
- case 1:
- this.rollDown(1);
- return;
- case 2:
- this.rollDown(2);
- return;
- case 5:
- if (((Calendar)this).internalGet(5) == this.getMinimum(5)) {
- if (((Calendar)this).internalGet(2) == 1 && this.isLeapYear(((Calendar)this).internalGet(1))) {
- ((Calendar)this).set(5, 29);
- return;
- }
-
- ((Calendar)this).set(5, maxDaysInMonth[((Calendar)this).internalGet(2)]);
- return;
- }
-
- ((Calendar)this).set(5, ((Calendar)this).internalGet(5) - 1);
- return;
- case 11:
- this.rollDown(11);
- return;
- case 12:
- this.rollDown(12);
- return;
- case 13:
- this.rollDown(13);
- return;
- case 14:
- this.rollDown(14);
- return;
- }
- }
-
- }
-
- private void rollDown(int var1) {
- if (((Calendar)this).internalGet(var1) == this.getMinimum(var1)) {
- ((Calendar)this).set(var1, this.getMaximum(var1));
- } else {
- ((Calendar)this).set(var1, ((Calendar)this).internalGet(var1) - 1);
- }
- }
-
- public int getMinimum(int var1) {
- return MinValues[var1];
- }
-
- public int getMaximum(int var1) {
- return MaxValues[var1];
- }
-
- public int getGreatestMinimum(int var1) {
- return GreatestMinValues[var1];
- }
-
- public int getLeastMaximum(int var1) {
- return LeastMaxValues[var1];
- }
- }
-